Reactã®experimental_useOptimisticããã¯ãæ¢æ±ããç¶æ ãæ¥œèгçã«æŽæ°ããããšã§ã¬ã¹ãã³ã·ããªUIãæ§ç¯ããäœæããã©ãŒãã³ã¹ãšãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããŸãã
React experimental_useOptimistic: ãªããã£ãã¹ãã£ãã¯UIã¢ããããŒãã®å®å šã¬ã€ã
ããã³ããšã³ãéçºã®äžçã§ã¯ãã¹ã ãŒãºã§ã¬ã¹ãã³ã·ããªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããšãæãéèŠã§ãããŠãŒã¶ãŒã¯ã¢ããªã±ãŒã·ã§ã³ãšå¯Ÿè©±ããéã«å³æã®ãã£ãŒãããã¯ãæåŸ
ããé
å»¶ã¯ãã©ã¹ãã¬ãŒã·ã§ã³ãé¢è±ã«ã€ãªããå¯èœæ§ããããŸããReactã®experimental_useOptimisticããã¯ã¯ããµãŒããŒã®å¿çãåãåãåã«UIãæ¥œèгçã«æŽæ°ããããšã§ãäœæããã©ãŒãã³ã¹ãåäžããã匷åãªãã¯ããã¯ãæäŸããŸãããã®ã¬ã€ãã§ã¯ãexperimental_useOptimisticã®è€éããæãäžãããã®ç®çãå®è£
ãå©ç¹ãããã³æœåšçãªæ¬ ç¹ã«ã€ããŠå
æ¬çã«è§£èª¬ããŸãã
ãªããã£ãã¹ãã£ãã¯UIãšã¯ïŒ
ãªããã£ãã¹ãã£ãã¯UIãšã¯ããŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ãæåãããšããåæã®ããšããã®ã¢ã¯ã·ã§ã³ã«å¿ããŠãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãå³åº§ã«æŽæ°ããããã¶ã€ã³ãã¿ãŒã³ã§ããããã«ããããŠãŒã¶ãŒã«å³æã®ãã£ãŒãããã¯ãæäŸãããã¢ããªã±ãŒã·ã§ã³ãããéããããã¬ã¹ãã³ã·ãã«æããããããã«ãªããŸããããã¯ã°ã©ãŠã³ãã§ã¯ãã¢ããªã±ãŒã·ã§ã³ããµãŒããŒã«ã¢ã¯ã·ã§ã³ãéä¿¡ããŠåŠçãè¡ããŸãããµãŒããŒãã¢ã¯ã·ã§ã³ã®æåã確èªããå Žåããã以äžã®æäœã¯å¿ èŠãããŸããããããããµãŒããŒããšã©ãŒãå ±åããå ŽåãUIã¯å ã®ç¶æ ã«ããŒã«ããã¯ããããŠãŒã¶ãŒã«éç¥ãããŸãã
以äžã®äŸãèããŠã¿ãŸãããïŒ
- ãœãŒã·ã£ã«ã¡ãã£ã¢ïŒãŠãŒã¶ãŒãæçš¿ã«ããããïŒãããããšãããããïŒãã®æ°ãå³åº§ã«å¢å ããŸãããã®åŸãã¢ããªã±ãŒã·ã§ã³ã¯ãµãŒããŒã«ãªã¯ãšã¹ããéä¿¡ããŠããããïŒããç»é²ããŸãã
- ã¿ã¹ã¯ç®¡çïŒãŠãŒã¶ãŒãã¿ã¹ã¯ãå®äºãšããŠããŒã¯ãããšããã®ã¿ã¹ã¯ã¯UIäžã§ããã«èŠèŠçã«å®äºæžã¿ãšããŠããŒã¯ãããŸãã
- Eã³ããŒã¹ïŒãŠãŒã¶ãŒãååãã·ã§ããã³ã°ã«ãŒãã«è¿œå ãããšãã«ãŒãã®ã¢ã€ã³ã³ããµãŒããŒã®ç¢ºèªãåŸ ããã«æ°ããååæ°ã§æŽæ°ãããŸãã
äž»ãªå©ç¹ã¯ãäœæããã©ãŒãã³ã¹ã®åäžã§ãããŠãŒã¶ãŒã¯å³æã®ãã£ãŒãããã¯ãäœéšããããšã§ãããšããµãŒããŒã®æäœã«å°ãæéãããã£ããšããŠããã¢ããªã±ãŒã·ã§ã³ããããããããšåããŠããããã«æããŸãã
experimental_useOptimisticã®ç޹ä»
Reactã®experimental_useOptimisticããã¯ã¯ããã®åã®éããçŸåšå®éšçãªæ©èœã§ããããã¯ããã®APIã倿Žãããå¯èœæ§ãããããšãæå³ããŸãããã®ããã¯ã¯ãReactã³ã³ããŒãã³ãã§ãªããã£ãã¹ãã£ãã¯ãªUIæŽæ°ã宣èšçã«å®è£
ããæ¹æ³ãæäŸããŸããã³ã³ããŒãã³ãã®ç¶æ
ãæ¥œèгçã«æŽæ°ãããµãŒããŒããšã©ãŒãå ±åããå Žåã«ã¯å
ã®ç¶æ
ã«æ»ãããšãã§ããŸããããã«ããããªããã£ãã¹ãã£ãã¯æŽæ°ã®å®è£
ããã»ã¹ãåçåãããã³ãŒããããã¯ãªãŒã³ã§ä¿å®ãããããªããŸãããã®ããã¯ãæ¬çªç°å¢ã§äœ¿çšããåã«ããã®é©åæ§ãååã«è©äŸ¡ããå°æ¥ã®ReactãªãªãŒã¹ã§ã®API倿Žã®å¯èœæ§ã«åããŠãã ãããå®éšçæ©èœã«é¢é£ããææ°æ
å ±ãæ³šæç¹ã«ã€ããŠã¯ãå
¬åŒã®Reactããã¥ã¡ã³ããåç
§ããŠãã ããã
experimental_useOptimisticã®äž»ãªå©ç¹
- ãªããã£ãã¹ãã£ãã¯æŽæ°ã®ç°¡çŽ åïŒãªããã£ãã¹ãã£ãã¯ãªç¶æ æŽæ°ã管çããããã®ã¯ãªãŒã³ã§å®£èšçãªAPIãæäŸããŸãã
- èªåããŒã«ããã¯ïŒãµãŒããŒæäœã倱æããå Žåã«å ã®ç¶æ ã«æ»ãåŠçããã³ãã«ããŸãã
- ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®åäžïŒããã¬ã¹ãã³ã·ãã§é åçãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãäœæããŸãã
- ã³ãŒãã®è€éãã®è»œæžïŒãªããã£ãã¹ãã£ãã¯UIãã¿ãŒã³ã®å®è£ ãç°¡çŽ åããã³ãŒãã®ä¿å®æ§ãé«ããŸãã
experimental_useOptimisticã®ä»çµã¿
experimental_useOptimisticããã¯ã¯2ã€ã®åŒæ°ãåããŸãïŒ
- çŸåšã®ç¶æ ïŒæ¥œèгçã«æŽæ°ãããç¶æ ã§ãã
- ç¶æ ã倿ãã颿°ïŒçŸåšã®ç¶æ ãšæ¥œèгçãªæŽæ°ãå ¥åãšããŠåãåããæ°ããæ¥œèгçãªç¶æ ãè¿ã颿°ã§ãã
ãã®ããã¯ã¯2ã€ã®èŠçŽ ãå«ãé åãè¿ããŸãïŒ
- 楜芳çãªç¶æ ïŒUIã«è¡šç€ºãããç¶æ ã§ããåæç¶æ ã§ã¯çŸåšã®ç¶æ ãšåãã§ããæ¥œèгçãªæŽæ°ã®åŸã倿颿°ã«ãã£ãŠè¡ããã倿Žãåæ ããŸãã
- 楜芳çãªæŽæ°ãé©çšãã颿°ïŒæ¥œèгçãªæŽæ°ãå ¥åãšããŠåãåããçŸåšã®ç¶æ ã«å€æé¢æ°ãé©çšããŸãããŸãããµãŒããŒæäœãå®äºãããšãïŒæåãŸãã¯ãšã©ãŒïŒã«è§£æ±ºãããPromiseãè¿ããŸãã
å®è·µäŸïŒãªããã£ãã¹ãã£ãã¯ãªããããïŒããã¿ã³
experimental_useOptimisticã®äœ¿çšæ³ããå®è·µçãªäŸã§ãããœãŒã·ã£ã«ã¡ãã£ã¢æçš¿ã®ãªããã£ãã¹ãã£ãã¯ãªããããïŒããã¿ã³ã§èª¬æããŸãããã
ã·ããªãªïŒãŠãŒã¶ãŒãæçš¿ã®ããããïŒããã¿ã³ãã¯ãªãã¯ããŸããç§ãã¡ã¯ããµãŒããŒãããããïŒãã確èªããã®ãåŸ ããã«ãUIã®ããããïŒãæ°ãå³åº§ã«å¢ãããããšèããŠããŸãããµãŒããŒãªã¯ãšã¹ãã倱æããå ŽåïŒäŸïŒãããã¯ãŒã¯ãšã©ãŒããŠãŒã¶ãŒãèªèšŒãããŠããªãå ŽåïŒãç§ãã¡ã¯ããããïŒãæ°ãå ã®å€ã«æ»ãå¿ èŠããããŸãã
```javascript import React, { useState, experimental_useOptimistic as useOptimistic } from 'react'; function Post({ postId, initialLikes }) { const [likes, setLikes] = useState(initialLikes); const [optimisticLikes, addOptimisticLike] = useOptimistic( likes, (currentState, optimisticUpdate) => currentState + optimisticUpdate ); async function handleLike() { const optimisticLikeValue = 1; // 楜芳çãªæŽæ°ãå®çŸ© addOptimisticLike(optimisticLikeValue); try { // æçš¿ã«ããããïŒãããããããã¯ãŒã¯ãªã¯ãšã¹ããã·ãã¥ã¬ãŒã await fakeLikePost(postId); // ãªã¯ãšã¹ããæåããå Žåãå®éã®ãããã®ç¶æ ãæŽæ° setLikes(optimisticLikes); } catch (error) { console.error("Failed to like post:", error); // addOptimisticLikeããªãžã§ã¯ãããããããæ¥œèгçãªæŽæ°ã¯èªåçã«å ã«æ»ããŸã setLikes(likes); // 以åã®å€ã«æ»ãïŒå®è£ ã«ãã£ãŠã¯äžèŠãªå ŽåããããŸãïŒ } } return (Post ID: {postId}
Likes: {optimisticLikes}
解説ïŒ
useStateïŒlikesç¶æ 倿°ã¯ããµãŒããŒããååŸããæçš¿ã®å®éã®ããããïŒãæ°ãä¿æããŸããuseOptimisticïŒ ãã®ããã¯ã¯likesç¶æ ãšå€æé¢æ°ãåŒæ°ã«åããŸãã倿颿°ã¯ãçŸåšã®ããããïŒãæ°ã«æ¥œèгçãªæŽæ°ïŒãã®å Žåã¯1ïŒãåçŽã«å ç®ããŸããoptimisticLikesïŒ ããã¯ã¯ãUIã«è¡šç€ºãããããããïŒãæ°ã衚ãoptimisticLikesç¶æ 倿°ãè¿ããŸããaddOptimisticLikeïŒ ããã¯ã¯ã楜芳çãªæŽæ°ãé©çšããããã«äœ¿çšãããaddOptimisticLike颿°ãè¿ããŸããhandleLikeïŒ ãã®é¢æ°ã¯ããŠãŒã¶ãŒãããããïŒããã¿ã³ãã¯ãªãã¯ãããšãã«åŒã³åºãããŸãããŸãaddOptimisticLike(1)ãåŒã³åºããŠUIã®optimisticLikesæ°ãå³åº§ã«å¢ãããŸããæ¬¡ã«ãfakeLikePostïŒã·ãã¥ã¬ãŒãããããããã¯ãŒã¯ãªã¯ãšã¹ãïŒãåŒã³åºããŠãããããïŒãã¢ã¯ã·ã§ã³ããµãŒããŒã«éä¿¡ããŸãã- ãšã©ãŒãã³ããªã³ã°ïŒ
fakeLikePostããªãžã§ã¯ããããå ŽåïŒãµãŒããŒãšã©ãŒãã·ãã¥ã¬ãŒãïŒãcatchãããã¯ãå®è¡ãããŸãããã®å ŽåãsetLikes(likes)ãåŒã³åºããŠlikesç¶æ ã以åã®å€ã«æ»ããŸããuseOptimisticããã¯ã¯ãoptimisticLikesãèªåçã«å ã®å€ã«æ»ããŸããããã§ã®éèŠãªç¹ã¯ãuseOptimisticãæå³éãã«å®å šã«æ©èœããããã«ã¯ãaddOptimisticLikeããšã©ãŒæã«ãªãžã§ã¯ããããPromiseãè¿ãå¿ èŠããããšããããšã§ãã
ãŠã©ãŒã¯ã¹ã«ãŒïŒ
- ã³ã³ããŒãã³ãã¯ã
likesãåæã®ããããïŒãæ°ïŒäŸïŒ10ïŒã§åæåãããŸãã - ãŠãŒã¶ãŒãããããïŒããã¿ã³ãã¯ãªãã¯ããŸãã
handleLikeãåŒã³åºãããŸããaddOptimisticLike(1)ãåŒã³åºãããUIã®optimisticLikesãå³åº§ã«11ã«æŽæ°ãããŸãããŠãŒã¶ãŒã¯ããããïŒãæ°ãç¬æã«å¢ããã®ãèŠãŸããfakeLikePost(postId)ã¯ãæçš¿ã«ããããïŒãããããªã¯ãšã¹ãããµãŒããŒã«éä¿¡ããã®ãã·ãã¥ã¬ãŒãããŸããfakeLikePostãïŒ1ç§åŸã«ïŒæåè£ã«è§£æ±ºãããå ŽåãsetLikes(optimisticLikes)ãåŒã³åºãããå®éã®likesç¶æ ã11ã«æŽæ°ããããµãŒããŒãšã®äžè²«æ§ã確ä¿ãããŸããfakeLikePostãïŒ1ç§åŸã«ïŒãªãžã§ã¯ããããå Žåãcatchãããã¯ãå®è¡ãããsetLikes(likes)ãåŒã³åºãããŠå®éã®likesç¶æ ã10ã«æ»ãããŸããuseOptimisticããã¯ã¯optimisticLikesã®å€ãäžèŽãããããã«10ã«æ»ããŸããUIã¯å ã®ç¶æ ïŒ10ãããïŒïŒãåæ ãããŠãŒã¶ãŒã«ã¯ãšã©ãŒãéç¥ããããããããŸããïŒäŸïŒãšã©ãŒã¡ãã»ãŒãžãšå ±ã«ïŒã
é«åºŠãªäœ¿çšæ³ãšèæ ®äºé
è€éãªç¶æ ã®æŽæ°
experimental_useOptimisticã«æž¡ããã倿颿°ã¯ãåçŽãªã€ã³ã¯ãªã¡ã³ããè¶
ãããããè€éãªç¶æ
æŽæ°ãåŠçã§ããŸããäŸãã°ãé
åã«é
ç®ã远å ãããããã¹ãããããªããžã§ã¯ããæŽæ°ããããè€æ°ã®ç¶æ
ããããã£ãåæã«å€æŽãããããããã«äœ¿çšã§ããŸãã
äŸïŒã³ã¡ã³ããªã¹ããžã®ã³ã¡ã³ãã®è¿œå ïŒ
```javascript import React, { useState, experimental_useOptimistic as useOptimistic } from 'react'; function CommentList({ initialComments }) { const [comments, setComments] = useState(initialComments); const [optimisticComments, addOptimisticComment] = useOptimistic( comments, (currentComments, newComment) => [...currentComments, newComment] ); async function handleAddComment(text) { const newComment = { id: Date.now(), text, author: "User" }; // æ°ããã³ã¡ã³ããªããžã§ã¯ããäœæ addOptimisticComment(newComment); try { // ã³ã¡ã³ãããµãŒããŒã«éä¿¡ããã®ãã·ãã¥ã¬ãŒã await fakeAddComment(newComment); setComments(optimisticComments); } catch (error) { console.error("Failed to add comment:", error); setComments(comments); // å ã®ç¶æ ã«æ»ã } } return (-
{optimisticComments.map(comment => (
- {comment.text} - {comment.author} ))}
ãã®äŸã§ã¯ã倿颿°ã¯çŸåšã®ã³ã¡ã³ãé åãšæ°ããã³ã¡ã³ããªããžã§ã¯ããå ¥åãšããŠåãåããæ¢åã®ãã¹ãŠã®ã³ã¡ã³ãã«æ°ããã³ã¡ã³ãã远å ããæ°ããé åãè¿ããŸããããã«ãããUIã®ãªã¹ãã«ã³ã¡ã³ããæ¥œèгçã«è¿œå ããããšãã§ããŸãã
åªçæ§ãšãªããã£ãã¹ãã£ãã¯æŽæ°
ãªããã£ãã¹ãã£ãã¯æŽæ°ãå®è£ ããéã«ã¯ããµãŒããŒæäœã®åªçæ§ïŒã¹ããšãããïŒãèæ ®ããããšãéèŠã§ããåªçãªæäœãšã¯ãæåã®é©çšä»¥éãäœåºŠé©çšããŠãçµæãå€ãããªãæäœã®ããšã§ããäŸãã°ãã«ãŠã³ã¿ãŒãã€ã³ã¯ãªã¡ã³ãããã®ã¯åªçã§ã¯ãããŸããããªããªããæäœãè€æ°åé©çšãããšã«ãŠã³ã¿ãŒãè€æ°åã€ã³ã¯ãªã¡ã³ããããããã§ããå€ãèšå®ããã®ã¯åªçã§ãããªããªããåãå€ãç¹°ãè¿ãèšå®ããŠããæåã®èšå®ä»¥éã¯çµæãå€ãããªãããã§ãã
ãµãŒããŒæäœãåªçã§ãªãå Žåããªãã©ã€ããããã¯ãŒã¯ã®åé¡ãçºçããå Žåã«ãªããã£ãã¹ãã£ãã¯æŽæ°ãè€æ°åé©çšãããã®ãé²ãä»çµã¿ãå®è£ ããå¿ èŠããããŸããäžè¬çãªã¢ãããŒãã®1ã€ã¯ãåãªããã£ãã¹ãã£ãã¯æŽæ°ã«å¯ŸããŠäžæã®IDãçæãããã®IDããµãŒããŒãžã®ãªã¯ãšã¹ãã«å«ããããšã§ãããµãŒããŒã¯ãã®IDã䜿çšããŠéè€ãªã¯ãšã¹ããæ€åºããæäœãè€æ°åé©çšãããã®ãé²ãããšãã§ããŸããããã¯ãããŒã¿ã®æŽåæ§ã確ä¿ããäºæããªãåäœãé²ãããã«éåžžã«éèŠã§ãã
è€éãªãšã©ãŒã·ããªãªã®åŠç
åºæ¬çãªäŸã§ã¯ããµãŒããŒæäœã倱æããå Žåãåã«å ã®ç¶æ ã«æ»ããŸãããããããå Žåã«ãã£ãŠã¯ãããè€éãªãšã©ãŒã·ããªãªãåŠçããå¿ èŠããããããããŸãããäŸãã°ããŠãŒã¶ãŒã«ç¹å®ã®ãšã©ãŒã¡ãã»ãŒãžã衚瀺ããããæäœããªãã©ã€ãããããããã¯å¥ã®æäœã詊ã¿ããããããšãèããããŸãã
handleLike颿°ã®catchãããã¯ã¯ããã®ããžãã¯ãå®è£
ããå Žæã§ããfakeLikePost颿°ããè¿ããããšã©ãŒãªããžã§ã¯ãã䜿çšããŠããšã©ãŒã®çš®é¡ã倿ããé©åãªã¢ã¯ã·ã§ã³ãå®è¡ã§ããŸãã
æœåšçãªæ¬ ç¹ãšèæ ®äºé
- è€éãïŒãªããã£ãã¹ãã£ãã¯UIã®æŽæ°ãå®è£ ãããšãç¹ã«è€éãªç¶æ æŽæ°ããšã©ãŒã·ããªãªãæ±ãå Žåã«ãã³ãŒãã®è€éããå¢ãå¯èœæ§ããããŸãã
- ããŒã¿ã®äžè²«æ§ã®æ¬ åŠïŒãµãŒããŒæäœã倱æããå Žåãç¶æ ãå ã«æ»ããŸã§UIã¯äžæçã«äžæ£ç¢ºãªããŒã¿ã衚瀺ããŸãã倱æãé©åã«åŠçãããªãå Žåãããã¯ãŠãŒã¶ãŒãæ··ä¹±ãããå¯èœæ§ããããŸãã
- åªçæ§ïŒãµãŒããŒæäœãåªçã§ããããšãä¿èšŒããããéè€æŽæ°ãé²ãä»çµã¿ãå®è£ ããããšããããŒã¿ã®æŽåæ§ãç¶æããããã«äžå¯æ¬ ã§ãã
- ãããã¯ãŒã¯ã®ä¿¡é Œæ§ïŒãªããã£ãã¹ãã£ãã¯UIã®æŽæ°ã¯ããããã¯ãŒã¯æ¥ç¶ãäžè¬çã«ä¿¡é Œã§ããå Žåã«æã广çã§ãããããã¯ãŒã¯ã®åæãé »ç¹ã«çºçããç°å¢ã§ã¯ããã®å©ç¹ãããŒã¿äžæŽåã®å¯èœæ§ã«ãã£ãŠçžæ®ºãããå¯èœæ§ããããŸãã
- å®éšçãªæ§è³ªïŒ
experimental_useOptimisticã¯å®éšçãªAPIã§ããããããã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯å°æ¥ã®ReactããŒãžã§ã³ã§å€æŽãããå¯èœæ§ããããŸãã
experimental_useOptimisticã®ä»£æ¿ææ®µ
experimental_useOptimisticã¯ãªããã£ãã¹ãã£ãã¯UIæŽæ°ãå®è£
ãã䟿å©ãªæ¹æ³ãæäŸããŸãããæ€èšãã¹ã代æ¿ã¢ãããŒãããããŸãïŒ
- æåã§ã®ç¶æ
管çïŒ
useStateãä»ã®Reactããã¯ã䜿çšããŠããªããã£ãã¹ãã£ãã¯ãªç¶æ æŽæ°ãæåã§ç®¡çããããšãã§ããŸãããã®ã¢ãããŒãã§ã¯æŽæ°ããã»ã¹ããã现ããå¶åŸ¡ã§ããŸãããããå€ãã®ã³ãŒããå¿ èŠã«ãªããŸãã - ã©ã€ãã©ãªïŒRedux Toolkitã®
createAsyncThunkãZustandãªã©ã®ã©ã€ãã©ãªã¯ãéåæã®ç¶æ 管çãç°¡çŽ åãããªããã£ãã¹ãã£ãã¯æŽæ°ã®çµã¿èŸŒã¿ãµããŒããæäŸã§ããŸãã - GraphQLã¯ã©ã€ã¢ã³ãã®ãã£ãã·ã³ã°ïŒGraphQLã䜿çšããŠããå Žåãã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªïŒäŸïŒApollo ClientãRelayïŒãããã®ãã£ãã·ã³ã°ã¡ã«ããºã ãéããŠãªããã£ãã¹ãã£ãã¯æŽæ°ã®çµã¿èŸŒã¿ãµããŒããæäŸããŠããå¯èœæ§ããããŸãã
experimental_useOptimisticã䜿çšãã¹ãæ
experimental_useOptimisticã¯ãç¹å®ã®ã·ããªãªã§ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããã®è²ŽéãªããŒã«ã§ãã以äžã®ãããªå Žåã«äœ¿çšãæ€èšããŠãã ããïŒ
- 峿ã®ãã£ãŒãããã¯ãäžå¯æ¬ ãªå ŽåïŒãŠãŒã¶ãŒã®ãšã³ã²ãŒãžã¡ã³ããç¶æããããã«ã峿ã®ãã£ãŒãããã¯ãå¿ èŠãªãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ïŒäŸïŒããããïŒããã³ã¡ã³ããã«ãŒããžã®è¿œå ïŒã
- ãµãŒããŒæäœãæ¯èŒçé«éãªå ŽåïŒãµãŒããŒæäœã倱æããå Žåã«ããªããã£ãã¹ãã£ãã¯æŽæ°ãè¿ éã«å ã«æ»ãããšãã§ããŸãã
- çæçãªããŒã¿ã®äžè²«æ§ãéèŠã§ãªãå ŽåïŒäœæããã©ãŒãã³ã¹ãåäžãããããã«ãçæéããŒã¿ãäžæŽåã«ãªãããšã蚱容ã§ããå Žåã
- å®éšçãªAPIã«æ £ããŠããå ŽåïŒAPI倿Žã®å¯èœæ§ãèªèããŠãããããã«å¿ããŠã³ãŒããé©å¿ãããææãããå Žåã
experimental_useOptimisticã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
- æç¢ºãªèŠèŠçãã£ãŒãããã¯ãæäŸããïŒUIãæ¥œèгçã«æŽæ°ãããããšããŠãŒã¶ãŒã«æç¢ºã«ç€ºãïŒäŸïŒããŒãã£ã³ã°ã€ã³ãžã±ãŒã¿ãŒãããããªãã¢ãã¡ãŒã·ã§ã³ã衚瀺ããïŒã
- ãšã©ãŒãé©åã«åŠçããïŒãµãŒããŒæäœã倱æããŠç¶æ ãå ã«æ»ã£ãå Žåã«ããŠãŒã¶ãŒã«æçãªãšã©ãŒã¡ãã»ãŒãžã衚瀺ããã
- åªçæ§ãå®è£ ããïŒãµãŒããŒæäœãåªçã§ããããšãä¿èšŒããããéè€æŽæ°ãé²ãä»çµã¿ãå®è£ ããã
- 培åºçã«ãã¹ãããïŒãããã¯ãŒã¯ã®åæããµãŒããŒãšã©ãŒãå«ãæ§ã ãªã·ããªãªã§ããªããã£ãã¹ãã£ãã¯UIã®æŽæ°ãæ£ããåäœããããšã確èªããããã«ã培åºçã«ãã¹ãããã
- ããã©ãŒãã³ã¹ãç£èŠããïŒãªããã£ãã¹ãã£ãã¯UIã®æŽæ°ãå®éã«ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããŠããããšã確èªããããã«ããã®ããã©ãŒãã³ã¹ãç£èŠããã
- ãã¹ãŠãææžåããïŒããã¯å®éšçãªæ©èœã§ããããã
useOptimisticãã©ã®ããã«å®è£ ãããŠããããããã³åææ¡ä»¶ãå¶çŽãæç¢ºã«ææžåããã
çµè«
Reactã®experimental_useOptimisticããã¯ã¯ãããã¬ã¹ãã³ã·ãã§é
åçãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãæ§ç¯ããããã®åŒ·åãªããŒã«ã§ãããµãŒããŒããã®å¿çãåãåãåã«UIãæ¥œèгçã«æŽæ°ããããšã§ãã¢ããªã±ãŒã·ã§ã³ã®äœæããã©ãŒãã³ã¹ã倧å¹
ã«åäžãããããã¹ã ãŒãºãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸã§ããŸãããããããã®ããã¯ãæ¬çªç°å¢ã§äœ¿çšããåã«ãæœåšçãªæ¬ ç¹ãèæ
®äºé
ãçè§£ããããšãäžå¯æ¬ ã§ãããã®ã¬ã€ãã§æŠèª¬ãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãããŒã¿ã®æŽåæ§ãšã¢ããªã±ãŒã·ã§ã³ã®å®å®æ§ãç¶æããªãããexperimental_useOptimisticã广çã«æŽ»çšããŠãåè¶ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåµåºã§ããŸããReactãé²åããã«ã€ããŠããã®å®éšçæ©èœã«é¢ããææ°ã®æŽæ°ãAPI倿Žã®å¯èœæ§ã«ã€ããŠåžžã«æ
å ±ãå
¥æããŠããããšãå¿ããªãã§ãã ããã